package service_metier;


import java.sql.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;

import model.Activite;
import model.Comedie;
import model.Genre;
import model.Personne;
import model.Realisation;
import model.Video;

//Classe regrouppant toutes les m�thodes statiques

public class Utilitaires {

	//Position d'un film dans la liste de Films
	public static int indexOf(Video vid, List<Video> listeVid){

		int i=0;
		while(i<=(listeVid.size()-1)){
			
			Video v = listeVid.get(i);
			if(v.equals(vid)){
				return i;
				
			}
			i++;
		}
		
		return -1;
	}
	
	//Position d'une personne dans la liste de Personne
	public static int indexOf(Personne per, List<Personne> listePer){

		int i=0;
		while(i<=(listePer.size()-1)){
			Personne p = listePer.get(i);
			if(p.equals(per)){
				return i;				
			}
			i++;
		}
		
		return -1;
	}
	
	
	public static Genre whatGenre(String s){
		Genre genreSelec = null;
		for(Genre g : Genre.values()){
			if(s.equals(g.getValue())) 	genreSelec = g;				
		}
		return genreSelec;
		
	}
	
	public static Integer getNbFilms(){
		return exempleListeVideo().size();
	}
	
	public static Integer getNbFilmsByGenre(String s){
		Genre genreSelec = Utilitaires.whatGenre(s);
		int i=0;
		for(Video v : exempleListeVideo()){
			if(v.getListeGenre().contains(genreSelec)) i++;
		}
		return i;
	}	
	
	
	//Liste de Vid�os
	public static List<Video> exempleListeVideo(){
		
		List<Video> listeVideo = new ArrayList<Video>();
		
		List<Activite> listeAct = new ArrayList<Activite>();
		List<Personne> listeReal = new ArrayList<Personne>();
		List<Activite> listeAct2 = new ArrayList<Activite>();
		List<Personne> listeReal2 = new ArrayList<Personne>();
		List<Activite> listeAct3 = new ArrayList<Activite>();
		List<Personne> listeReal3 = new ArrayList<Personne>();
		List<Personne> listeActeur = new ArrayList<Personne>();
		List<Personne> listeActeur2 = new ArrayList<Personne>();
		List<Personne> listeActeur3 = new ArrayList<Personne>();
		
		listeReal.add(new Personne("Kauffman","Lloyd",1));
		listeReal2.add(new Personne("Kauffman","Lloyd",1));
		listeReal3.add(new Personne("Kauffman","Lloyd",1));
		listeActeur.add(new Personne("Jeremy","Ron",2)) ;
		listeActeur2.add(new Personne("Jeremy","Ron",2)) ;
		listeActeur3.add(new Personne("Parker","Trey",3)) ;
		
		Activite acteur = new Comedie(listeActeur);
		Activite realisateur = new Realisation(listeReal);
		Activite acteur2 = new Comedie(listeActeur2);
		Activite realisateur2 = new Realisation(listeReal2);
		Activite acteur3 = new Comedie(listeActeur3);
		Activite realisateur3 = new Realisation(listeReal3);
		
		listeAct.add(realisateur);
		listeAct.add(acteur) ;
		listeAct2.add(realisateur2);
		listeAct2.add(acteur2) ;
		listeAct3.add(realisateur3);
		listeAct3.add(acteur3) ;
		
		
		
		
		
		List<Genre> listeGenre = new ArrayList<Genre>();
		listeGenre.add(Genre.COMEDIE);
		
		List<Genre> listeGenre2 = new ArrayList<Genre>();
		listeGenre2.add(Genre.ROMANCE);
				
		
		Video ToxicAvenger = new Video("Toxic Avenger", listeAct, "./the-toxic-avenger-153960.jpg",listeGenre, "1", new GregorianCalendar(1986,4,11));
		listeVideo.add(ToxicAvenger);
		
		
		Video ToxicAvenger2 = new Video("Toxic Avenger II", listeAct2, "./toxie2.jpeg",listeGenre2, "2", new GregorianCalendar(1996,4,11));
		listeVideo.add(ToxicAvenger2);
		
		Video CapitaineOrgazmo = new Video("Capitaine Orgazmo", listeAct3, "./orgazmo.JPG",listeGenre, "3", new GregorianCalendar(2007,7,11));
		listeVideo.add(CapitaineOrgazmo);
		
		
		return listeVideo;
	}
	
	public static int getNbPersonnes(){
		return exempleListePersonne().size();
	}
	
	public static int getNbPersonneByActivite(String activite){
		int i = 0;
		for(Video v : exempleListeVideo()){
			for(Activite a : v.getListeActivite()){
				if(a.getType().equals(activite)){
					i = i + a.getListePersonne().size();
				}
			}
		}
		return i;
	}
	
	public static List<Personne> exempleListePersonne(){
		List<Personne> listeP = new ArrayList<Personne>();
		for(Video v : Utilitaires.exempleListeVideo()){
			for(Activite a :v.getListeActivite()){
				for(Personne p : a.getListePersonne()){
					if(listeP.isEmpty()){
						listeP.add(p);
					}else{
						if(indexOf(p,listeP)==(-1)) listeP.add(p);
					}
					}
				}
			}
		
		return listeP;
	}
	
}
